﻿using System;
using System.Collections.Generic;
using System.Text;

namespace TestKontrole2 {
    public class ElementKontrole: IElement {
        private Kontrola observerKontrola;
        private IElement element;
        private string komentar;
        private ObiljezjeIspravnostiElementa ispravnost;
        private bool zamjena;

        public ElementKontrole(){
        }

        public ElementKontrole(Kontrola kontrola, IElement element) {
            ObserverKontrola = kontrola;
            this.Element = element;
            ispravnost = ObiljezjeIspravnostiElementa.neocijenjen;
            Zamjena = false;
        }
        public ElementKontrole(Kontrola kontrola, IElement element, bool zamjena) : this(kontrola, element) {
            this.Zamjena = zamjena;
        }

        virtual public string KomentarRevizora {
            get { return komentar; }
            set { komentar = value; }
        }

        virtual public ObiljezjeIspravnostiElementa Ispravnost {
            get { return ispravnost; }
            set { ispravnost = value; }
        }

        virtual public bool Zamjena {
            get { return zamjena; }
            set { zamjena = value; }
        }

        virtual public Kontrola KontrolaElementa {
            get { return observerKontrola; }
            set { observerKontrola = value; }
        }

        virtual public IElement PodElement {
            get { return element; }
            set { element = value; }
        }

        /// <summary>
        /// je li koristen kao dodatna stavka
        /// </summary>
        public bool isZamjena() {
            return Zamjena;
        }

        public void notify() {
            KontrolaElementa.update(getID(), ispravnost);
        }
        public void setIspravnost(ObiljezjeIspravnostiElementa ispr){
            ispravnost = ispr;
            notify();
        }

        #region IElement Members

        public int getID() {
            return Element.getID();
        }

        public string getOpisElementa() {
            return Element.getOpisElementa();
        }

        public DateTime getDatum() {
            return Element.getDatum();
        }

        public string getNaziv() {
            return Element.getNaziv();
        }

        public void setOpisElementa(string opis) {
            Element.setOpisElementa(opis);
        }

        #endregion
    }
}
